package com.thesis.manage.service;

import com.thesis.manage.common.mongodb.MongoService;
import com.thesis.manage.common.utils.Result;
import com.thesis.manage.domain.Thesis;
import com.thesis.manage.service.module.vo.ThesisVO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * @author php
 * @date 2018/2/3
 */
public interface ThesisService extends MongoService<Thesis> {
    /**
     * 验证是否打开或过期
     * -1 代表已结束
     * 0 代表未开启
     * 1 代表正在运行中
     *
     * @return result
     */
    Result checkOpenApplication(Integer type);

    /**
     * 论题保存
     *
     * @param thesis 论题
     */
    void save(Thesis thesis);

    /**
     * 查找申请题目（teacher）
     *
     * @param thesis   查询参数
     * @param pageable 分页参数
     * @return page
     */
    Page<ThesisVO> findByTeacher(Thesis thesis, Pageable pageable);

    /**
     * 查询待审核的论题
     *
     * @param thesis   论题参数
     * @param pageable 分页参数
     * @return page
     */
    Page<ThesisVO> reviewList(Thesis thesis, Pageable pageable);

    /**
     * 通过院系查找所有
     *
     * @param thesis   thesis
     * @param pageable pageable
     * @return page
     */
    Page<ThesisVO> findAllByCollege(Thesis thesis, Pageable pageable);


    /**
     * 审核通过
     *
     * @param id      id
     * @param message 评语
     */
    void adopt(Long id, String message);

    /**
     * 审核不通过
     *
     * @param id      id
     * @param message 评语
     */
    void unAdopt(Long id, String message);

    /**
     * 查询论题
     *
     * @param thesis 查询参数
     * @return list
     */
    List<ThesisVO> findAllByPerson(Thesis thesis);

    /**
     * 查询学生可选题列表
     *
     * @param teacherNumber 教师编号
     * @param studentId     学生id
     * @param pageable      分页参数
     * @return page
     */
    Page<ThesisVO> showThesisList(String teacherNumber, Long studentId, Pageable pageable);
}
